package com.cn.wanxi.model;

public class ResultModel {
    private Integer code;//给前端状态编码0,1,2,200.500,404
    private String msg;//给前端提示”成功，失败等
    private Integer count;//数据的条数
    private Object data;//查询后得到的数据

    private ResultModel() {
    }

    private static ResultModel resultModel = null;

    /**
     * 既然是公共的返回结果，而且不需要每次都去创建对象，所以，这里用static
     * 那么，再其他类调用当前这个类的时候，不允许创建当前类对象，
     * 其他类调用当前的new关键字创建的方法，其实是调用当前类的构造方法
     * 所以，我们可以让当前的构造方法私有化
     *
     * @param data
     * @return
     */
    public static ResultModel getResultModel(Object data) {
        return setResultModel("", 0, data);
    }

    public static ResultModel getResultModel(Object data, int count) {
        return setResultModel("", count, data);
    }

    /**
     * 将影响的条数放入count里面
     *
     * @param count
     * @return
     */
    public static ResultModel getResultModel(int count) {
        return setResultModel("", count, null);
    }

    /**
     * 根据消息返回结果对象
     *
     * @param msg
     * @return
     */
    public static ResultModel getResultModel(String msg) {
        return setResultModel(msg, 0, null);
    }

    private static ResultModel setResultModel(String msg, int count, Object data) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setCode(0);
        resultModel.setMsg(msg);
        resultModel.setCount(count);
        resultModel.setData(data);
        return resultModel;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
